package com.liming.service.wx;

import com.liming.service.wx.pojo.vo.PrepayVO;
import com.wechat.pay.java.service.payments.model.Transaction;
import com.wechat.pay.java.service.refund.model.Refund;

/**
 * @author liming
 * @date 2025/4/9
 */
public interface WxClient {

    /**
     * 微信小程序登录
     *
     * @param jsCode code
     * @return openid
     */
    String wxMiniLogin(String jsCode);

    /**
     * 微信预支付 Jsapi / 小程序
     *
     * @return prepayId
     */
    PrepayVO wxJsapiPay(String openid, String orderNo);

    /**
     * 微信再次预支付 Jsapi / 小程序
     *
     * @return prepayVO
     */
    PrepayVO wxJsapiRepay(String prepayPackage);

    /**
     * 微信查询订单 根据订单号
     *
     * @param outTradeNo 系统订单号
     * @return Transaction
     */
    Transaction wxJsapiQueryOrderByOutTradeNo(String outTradeNo);

    /**
     * 微信关闭订单 根据订单号
     *
     * @param outTradeNo 系统订单号
     */
    void wxJsapiCloseOrderByOutTradeNo(String outTradeNo);

    /**
     * 微信退款
     *
     * @param orderNo  系统订单号
     * @param refundNo 系统退款订单号
     * @return Refund
     */
    Refund wxRefundWithRefundNoByOrderNo(String orderNo, String refundNo);

    /**
     * 微信查询退款 根据退款订单号
     */
    Refund wxRefundQueryByRefundNo(String refundNo);
}
